import os
from pathlib import Path

from autogen import AssistantAgent, UserProxyAgent, LLMConfig
from autogen.coding import LocalCommandLineCodeExecutor,DockerCommandLineCodeExecutor
api_key = "sk-e7a0e0fbeaa54443aeb12a9bee6e2321"
# Setting up the code executor
workdir = Path("coding")
workdir.mkdir(exist_ok=True)
code_executor = LocalCommandLineCodeExecutor(work_dir=workdir)

# Setting up the configuration for DeepSeek-V3
llm_config = LLMConfig(
    model="deepseek-chat",
    base_url="https://api.deepseek.com/v1",
    api_key=api_key,
    api_type="deepseek",
    tags=["deepseek"],
)

# Setting up the agents

# The UserProxyAgent will execute the code that the AssistantAgent provides
user_proxy_agent = UserProxyAgent(
    name="User",
    code_execution_config={"executor": code_executor},
    is_termination_msg=lambda msg: "FINISH" in msg.get("content"),
)

system_message = """
You are Cline, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.
###后端技术栈
1、使用c#编程语言，xml注释
2、使用aspnet core框架，dotnet 使用8.0版本
3、使用Volo.Abp框架，abp使用8.0版本
4、使用EntityFrameworkCore 8.0版本
5、数据库使用MySQL 8.0版本
6、代码层实现读写分离
7、数据库实现读写分离，接口传入参数ReadOnly，默认为True,为True时，从读库查询，为False时，从主库查询
###前端技术栈
1、使用typescript编程语言
2、使用vue 3.0框架
3、vite构建工具
4、使用antd vue组件库
5、使用axios库调用接口
6、使用pinia状态管理库
"""

# The AssistantAgent, using DeepSeek-V3 model, will take the coding request and return code
with llm_config:
    assistant_agent = AssistantAgent(
        name="DeepSeek_Assistant",
        system_message=system_message,
        silent=True,
        # run_executor =code_executor,
        # code_executor=code_executor
    )

task_promopt  = """
根据下面的实体信息开发功能,要求完成实现
实体:Menu:菜单
-ParentId,Nullable`1:上级菜单
-DisplayName,String:显示名称
-Icon,String:图标
-Url,String:访问地址
-Component,String:组件
-Remarks,String:备注
-SequenceTime,DateTime:排序时间
-Enabled,Boolean:是否启用
-Id,Guid:ID
-CreationTime,DateTime:创建人
-CreatorId,Nullable`1:创建人
-CreatorName,String:创建人姓名
-LastModificationTime,Nullable`1:最后修改时间
-LastModifierId,Nullable`1:最后修改人
-LastModifierName,String:最后修改人姓名
-IsDeleted,Boolean:是否删除
-DeletionTime,Nullable`1:删除时间
-DeleterId,Nullable`1:删除人
-DeleterName,String:删除人姓名
"""



# Start the chat, with the UserProxyAgent asking the AssistantAgent the message
chat_result = user_proxy_agent.initiate_chat(
    assistant_agent,
    message=task_promopt

)